www.gusucode.com > C++ 图像分割源代码 > C++ 图像分割源代码/gusucode/seg_source/Utility.cpp
//Download by http://www.NewXing.com //Copyright (c) 2004-2005, Baris Sumengen //All rights reserved. // // CIMPL Matrix Performance Library // //Redistribution and use in source and binary //forms, with or without modification, are //permitted provided that the following //conditions are met: // // * No commercial use is allowed. // This software can only be used // for non-commercial purposes. This // distribution is mainly intended for // academic research and teaching. // * Redistributions of source code must // retain the above copyright notice, this // list of conditions and the following // disclaimer. // * Redistributions of binary form must // mention the above copyright notice, this // list of conditions and the following // disclaimer in a clearly visible part // in associated product manual, // readme, and web site of the redistributed // software. // * Redistributions in binary form must // reproduce the above copyright notice, // this list of conditions and the // following disclaimer in the // documentation and/or other materials // provided with the distribution. // * The name of Baris Sumengen may not be // used to endorse or promote products // derived from this software without // specific prior written permission. // //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT //HOLDERS AND CONTRIBUTORS "AS IS" AND ANY //EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT //NOT LIMITED TO, THE IMPLIED WARRANTIES OF //MERCHANTABILITY AND FITNESS FOR A PARTICULAR //PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE //CONTRIBUTORS BE LIABLE FOR ANY //DIRECT, INDIRECT, INCIDENTAL, SPECIAL, //EXEMPLARY, OR CONSEQUENTIAL DAMAGES //(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT //OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, //DATA, OR PROFITS; OR BUSINESS INTERRUPTION) //HOWEVER CAUSED AND ON ANY THEORY OF //LIABILITY, WHETHER IN CONTRACT, STRICT //LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR //OTHERWISE) ARISING IN ANY WAY OUT OF THE USE //OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. #include "./Utility.h" #include <iostream> using std::cout; using std::cerr; using std::endl; namespace CIMPL { Utility::Utility(void) { } Utility::~Utility(void) { } void Utility::RunTimeError(char *message) { cerr << "Run Time Error!" << endl; cerr << message << endl; cerr << "Exiting now..." << endl << endl; exit(1); } void Utility::Warning(char *message) { cout << "Warning!" << endl; cout << message << endl << endl ; } void Utility::CheckPointer(void *p) { if(p == 0) { cerr << "Memory Allocation Error. May be out of memory!" << endl; cerr << "Exiting now..." << endl << endl; exit(1); } } vector<string> Utility::Split(const string& str, const string& delimiters) { std::vector<string> tokens; string::size_type lastPos = str.find_first_not_of(delimiters, 0); string::size_type pos = str.find_first_of(delimiters, lastPos); while (string::npos != pos || string::npos != lastPos) { tokens.push_back(str.substr(lastPos, pos - lastPos)); lastPos = str.find_first_not_of(delimiters, pos); pos = str.find_first_of(delimiters, lastPos); } return tokens; } string Utility::Join(vector<string>& tokens, const string delim) { string temp = ""; vector<string>::const_iterator constIterator; int i = 0; for(constIterator = tokens.begin(); constIterator != tokens.end(); constIterator++) { if(i != 0) { temp += delim; } temp += *constIterator; i++; } return temp; } int Utility::ToInt(string &s) { int temp; std::stringstream ss(s); ss >> temp; return temp; } double Utility::ToDouble(string &s) { double temp; std::stringstream ss(s); ss >> temp; return temp; } }; // namespace